(defmacro define-exact-binary-operation (name)
  (let ((x (gensym))
	(y (gensym)))
    `(defun ,(intern (format nil "~AE" name)) (,x ,y)
       (float (,name (rationalize ,x)
		     (rationalize ,y))))))

(define-exact-binary-operation +)
(define-exact-binary-operation -)
(define-exact-binary-operation *)
(define-exact-binary-operation /)

(- 0.9 0.5)				; 0.39999998
(-e 0.9 0.5)				; 0.4